home *** CD-ROM | disk | FTP | other *** search
/ Your Web Site Creator / Your Web Site Creator.iso / WebSite / data1.cab / Program_Executable_Files / Classes / BANNER2.CLA (.txt) < prev    next >
Encoding:
Java Class File  |  1999-01-13  |  8.3 KB  |  533 lines

  1. import java.applet.Applet;
  2. import java.awt.Canvas;
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Event;
  7. import java.awt.Graphics;
  8. import java.awt.Image;
  9. import java.awt.image.CropImageFilter;
  10. import java.awt.image.FilteredImageSource;
  11. import java.awt.image.ImageObserver;
  12. import java.net.URL;
  13. import java.util.Random;
  14.  
  15. public class BannerCanvas2 extends Canvas implements Runnable {
  16.    Thread appThread;
  17.    Image osImage;
  18.    Graphics osg;
  19.    Applet theApplet;
  20.    int currentX;
  21.    int currentY;
  22.    int currentWidth;
  23.    int currentHeight;
  24.    Image[] images;
  25.    URL[] urls;
  26.    int interval = 1000;
  27.    int movementInterval;
  28.    int delayTime = 250;
  29.    int movementIncrement;
  30.    Random randomizer = new Random();
  31.    boolean waitingBetweenModes = false;
  32.    int prevImage = -1;
  33.    int currImage = -1;
  34.    int currMode = -1;
  35.    boolean currModeFinished = false;
  36.    static final int firstMoveMode = 0;
  37.    static final int lastMoveMode = 7;
  38.    static final int firstSplitMode = 8;
  39.    static final int lastSplitMode = 10;
  40.    Image[][] centerSplitBothImages;
  41.    int centerSplitBothImageCount;
  42.    Image[][] centerSplitVertImages;
  43.    int centerSplitVertImageCount;
  44.    Image[][] centerSplitHorizImages;
  45.    int centerSplitHorizImageCount;
  46.    static final int MODE_MOVE_DOWN = 0;
  47.    static final int MODE_MOVE_UP = 1;
  48.    static final int MODE_MOVE_LEFT = 2;
  49.    static final int MODE_MOVE_RIGHT = 3;
  50.    static final int MODE_MOVE_NORTHWEST = 4;
  51.    static final int MODE_MOVE_NORTHEAST = 5;
  52.    static final int MODE_MOVE_SOUTHWEST = 6;
  53.    static final int MODE_MOVE_SOUTHEAST = 7;
  54.    static final int MODE_SPLIT_CENTER_BOTH = 8;
  55.    static final int MODE_SPLIT_CENTER_VERT = 9;
  56.    static final int MODE_SPLIT_CENTER_HORIZ = 10;
  57.    static final int numModes = 11;
  58.    Color bkColor;
  59.    Image bkImage;
  60.  
  61.    public BannerCanvas2(Applet var1, int var2) {
  62.       this.theApplet = var1;
  63.       this.GetParameters(var1, var2);
  64.    }
  65.  
  66.    void GetParameters(Applet var1, int var2) {
  67.       String var3 = var1.getParameter("bannerImageList" + var2);
  68.       if (var3 != null) {
  69.          var3 = var1.getParameter("bannerImageStrip" + var2);
  70.          boolean var4 = AppletParam2.GetBoolean(var3, false);
  71.          if (var4) {
  72.             var3 = var1.getParameter("bannerImageWidth" + var2);
  73.             int var5 = AppletParam2.GetInt(var3, 100);
  74.             var3 = var1.getParameter("bannerImageList" + var2);
  75.             this.images = AppletParam2.GetImageStrip(var1, var3, var5);
  76.          } else {
  77.             var3 = var1.getParameter("bannerImageList" + var2);
  78.             this.images = AppletParam2.GetImageList(var1, var3);
  79.          }
  80.       }
  81.  
  82.       var3 = var1.getParameter("bannerInterval" + var2);
  83.       this.interval = AppletParam2.GetInt(var3, 5000);
  84.       var3 = var1.getParameter("bannerMovementInterval" + var2);
  85.       this.movementInterval = AppletParam2.GetInt(var3, 500);
  86.       var3 = var1.getParameter("bannerMovementIncrement" + var2);
  87.       this.movementIncrement = AppletParam2.GetInt(var3, 2);
  88.       var3 = var1.getParameter("bannerUrlList" + var2);
  89.       if (var3 != null) {
  90.          this.urls = AppletParam2.GetURLList(var3);
  91.       }
  92.  
  93.       var3 = var1.getParameter("bannerBkColor" + var2);
  94.       this.bkColor = AppletParam2.GetColor(var3, (Color)null);
  95.       if (this.bkColor != null) {
  96.          ((Component)this).setBackground(this.bkColor);
  97.       }
  98.  
  99.    }
  100.  
  101.    public void Start() {
  102.       this.appThread = new Thread(this);
  103.       this.appThread.start();
  104.    }
  105.  
  106.    public void Stop() {
  107.       this.appThread.stop();
  108.       this.appThread = null;
  109.    }
  110.  
  111.    public void update(Graphics var1) {
  112.       if (this.osImage == null) {
  113.          this.osImage = ((Component)this).createImage(((Component)this).size().width, ((Component)this).size().height);
  114.          this.osg = this.osImage.getGraphics();
  115.       }
  116.  
  117.       if (this.bkImage != null) {
  118.          int var2 = this.bkImage.getWidth(this);
  119.          int var3 = this.bkImage.getHeight(this);
  120.          int var4 = ((Component)this).size().width / var2;
  121.          int var5 = ((Component)this).size().height / var3;
  122.          ++var4;
  123.          ++var5;
  124.  
  125.          for(int var6 = 0; var6 < var5; ++var6) {
  126.             for(int var7 = 0; var7 < var4; ++var7) {
  127.                this.osg.drawImage(this.bkImage, var7 * var2, var6 * var3, this);
  128.             }
  129.          }
  130.       }
  131.  
  132.       if (!this.waitingBetweenModes) {
  133.          if (this.prevImage == -1) {
  134.             this.osg.setColor(((Component)this).getBackground());
  135.             this.osg.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
  136.          }
  137.  
  138.          if (!this.currModeFinished) {
  139.             if (this.IsMoveMode()) {
  140.                this.osg.setColor(((Component)this).getBackground());
  141.                this.osg.fillRect(this.currentX, this.currentY, ((Component)this).size().width, ((Component)this).size().height);
  142.                this.osg.drawImage(this.images[this.currImage], this.currentX, this.currentY, ((Component)this).size().width, ((Component)this).size().height, ((Component)this).getBackground(), this);
  143.             } else if (this.IsSplitMode()) {
  144.                switch (this.currMode) {
  145.                   case 8:
  146.                      int var12 = this.currentX;
  147.                      int var20 = this.currentY;
  148.                      int var29 = ((Component)this).size().width / 2;
  149.                      int var38 = ((Component)this).size().height / 2;
  150.                      this.osg.drawImage(this.centerSplitBothImages[this.currImage][0], var12, var20, var29, var38, ((Component)this).getBackground(), this);
  151.                      var12 = ((Component)this).size().width / 2 - this.currentX;
  152.                      var20 = this.currentY;
  153.                      var29 = ((Component)this).size().width / 2;
  154.                      var38 = ((Component)this).size().height / 2;
  155.                      this.osg.drawImage(this.centerSplitBothImages[this.currImage][1], var12, var20, var29, var38, ((Component)this).getBackground(), this);
  156.                      var12 = this.currentX;
  157.                      var20 = ((Component)this).size().height / 2 - this.currentY;
  158.                      var29 = ((Component)this).size().width / 2;
  159.                      var38 = ((Component)this).size().height / 2;
  160.                      this.osg.drawImage(this.centerSplitBothImages[this.currImage][2], var12, var20, var29, var38, ((Component)this).getBackground(), this);
  161.                      var12 = ((Component)this).size().width / 2 - this.currentX;
  162.                      var20 = ((Component)this).size().height / 2 - this.currentY;
  163.                      var29 = ((Component)this).size().width / 2;
  164.                      var38 = ((Component)this).size().height / 2;
  165.                      this.osg.drawImage(this.centerSplitBothImages[this.currImage][3], var12, var20, var29, var38, ((Component)this).getBackground(), this);
  166.                      break;
  167.                   case 9:
  168.                      int var10 = this.currentX;
  169.                      int var18 = this.currentY;
  170.                      int var27 = ((Component)this).size().width / 2;
  171.                      int var36 = ((Component)this).size().height;
  172.                      this.osg.drawImage(this.centerSplitVertImages[this.currImage][0], var10, var18, var27, var36, ((Component)this).getBackground(), this);
  173.                      var10 = ((Component)this).size().width / 2 - this.currentX;
  174.                      var18 = this.currentY;
  175.                      var27 = ((Component)this).size().width / 2;
  176.                      var36 = ((Component)this).size().height;
  177.                      this.osg.drawImage(this.centerSplitVertImages[this.currImage][1], var10, var18, var27, var36, ((Component)this).getBackground(), this);
  178.                      break;
  179.                   case 10:
  180.                      int var8 = this.currentX;
  181.                      int var16 = this.currentY;
  182.                      int var25 = ((Component)this).size().width;
  183.                      int var34 = ((Component)this).size().height / 2;
  184.                      this.osg.drawImage(this.centerSplitHorizImages[this.currImage][0], var8, var16, var25, var34, ((Component)this).getBackground(), this);
  185.                      var8 = this.currentX;
  186.                      var16 = ((Component)this).size().height / 2 - this.currentY;
  187.                      var25 = ((Component)this).size().width;
  188.                      var34 = ((Component)this).size().height / 2;
  189.                      this.osg.drawImage(this.centerSplitHorizImages[this.currImage][1], var8, var16, var25, var34, ((Component)this).getBackground(), this);
  190.                }
  191.             }
  192.          }
  193.       }
  194.  
  195.       var1.drawImage(this.osImage, 0, 0, this);
  196.    }
  197.  
  198.    public void run() {
  199.       while(true) {
  200.          if (this.appThread.isAlive()) {
  201.             try {
  202.                ((Component)this).repaint();
  203.                if (!this.waitingBetweenModes) {
  204.                   if (!this.currModeFinished) {
  205.                      this.UpdateMode();
  206.                      if (this.currModeFinished) {
  207.                         this.waitingBetweenModes = true;
  208.                         this.delayTime = this.interval;
  209.                      }
  210.                   }
  211.                } else {
  212.                   this.waitingBetweenModes = false;
  213.                   this.SetNewMode();
  214.                }
  215.  
  216.                Thread.sleep((long)this.delayTime);
  217.             } catch (InterruptedException var1) {
  218.             }
  219.          }
  220.       }
  221.    }
  222.  
  223.    void UpdateMode() {
  224.       switch (this.currMode) {
  225.          case 0:
  226.             if (this.currentY >= 0) {
  227.                this.currModeFinished = true;
  228.                return;
  229.             }
  230.  
  231.             this.currentY += this.movementIncrement;
  232.             if (this.currentY >= 0) {
  233.                this.currentY = 0;
  234.                return;
  235.             }
  236.             break;
  237.          case 1:
  238.             if (this.currentY <= 0) {
  239.                this.currModeFinished = true;
  240.                return;
  241.             }
  242.  
  243.             this.currentY -= this.movementIncrement;
  244.             if (this.currentY < 0) {
  245.                this.currentY = 0;
  246.                return;
  247.             }
  248.             break;
  249.          case 2:
  250.             if (this.currentX <= 0) {
  251.                this.currModeFinished = true;
  252.                return;
  253.             }
  254.  
  255.             this.currentX -= this.movementIncrement;
  256.             if (this.currentX < 0) {
  257.                this.currentX = 0;
  258.                return;
  259.             }
  260.             break;
  261.          case 3:
  262.             if (this.currentX >= 0) {
  263.                this.currModeFinished = true;
  264.                return;
  265.             }
  266.  
  267.             this.currentX += this.movementIncrement;
  268.             if (this.currentX > 0) {
  269.                this.currentX = 0;
  270.                return;
  271.             }
  272.             break;
  273.          case 4:
  274.             if (this.currentX <= 0 && this.currentY <= 0) {
  275.                this.currModeFinished = true;
  276.                return;
  277.             }
  278.  
  279.             this.currentX -= this.movementIncrement;
  280.             this.currentY -= this.movementIncrement;
  281.             if (this.currentX < 0 || this.currentY < 0) {
  282.                this.currentX = 0;
  283.                this.currentY = 0;
  284.             }
  285.  
  286.             return;
  287.          case 5:
  288.             if (this.currentX >= 0 && this.currentY <= 0) {
  289.                this.currModeFinished = true;
  290.                return;
  291.             }
  292.  
  293.             this.currentX += this.movementIncrement;
  294.             this.currentY -= this.movementIncrement;
  295.             if (this.currentX > 0 || this.currentY < 0) {
  296.                this.currentX = 0;
  297.                this.currentY = 0;
  298.             }
  299.  
  300.             return;
  301.          case 6:
  302.             if (this.currentX <= 0 && this.currentY >= 0) {
  303.                this.currModeFinished = true;
  304.                return;
  305.             }
  306.  
  307.             this.currentX -= this.movementIncrement;
  308.             this.currentY += this.movementIncrement;
  309.             if (this.currentX < 0 || this.currentY > 0) {
  310.                this.currentX = 0;
  311.                this.currentY = 0;
  312.             }
  313.  
  314.             return;
  315.          case 7:
  316.             if (this.currentX >= 0 && this.currentY >= 0) {
  317.                this.currModeFinished = true;
  318.                return;
  319.             }
  320.  
  321.             this.currentX += this.movementIncrement;
  322.             this.currentY += this.movementIncrement;
  323.             if (this.currentX > 0 || this.currentY > 0) {
  324.                this.currentX = 0;
  325.                this.currentY = 0;
  326.             }
  327.  
  328.             return;
  329.          case 8:
  330.             if (this.currentX >= 0 && this.currentY >= 0) {
  331.                this.currModeFinished = true;
  332.                return;
  333.             }
  334.  
  335.             this.currentX += this.movementIncrement;
  336.             this.currentY += this.movementIncrement;
  337.             if (this.currentX > 0 || this.currentY > 0) {
  338.                this.currentX = 0;
  339.                this.currentY = 0;
  340.             }
  341.  
  342.             return;
  343.          case 9:
  344.             if (this.currentX >= 0) {
  345.                this.currModeFinished = true;
  346.                return;
  347.             }
  348.  
  349.             this.currentX += this.movementIncrement;
  350.             if (this.currentX > 0) {
  351.                this.currentX = 0;
  352.                return;
  353.             }
  354.             break;
  355.          case 10:
  356.             if (this.currentY >= 0) {
  357.                this.currModeFinished = true;
  358.                return;
  359.             }
  360.  
  361.             this.currentY += this.movementIncrement;
  362.             if (this.currentY > 0) {
  363.                this.currentY = 0;
  364.                return;
  365.             }
  366.       }
  367.  
  368.    }
  369.  
  370.    void SetNewMode() {
  371.       this.currMode = Math.abs(this.randomizer.nextInt()) % 11;
  372.       this.prevImage = this.currImage++;
  373.       if (this.currImage >= this.images.length) {
  374.          this.currImage = 0;
  375.       }
  376.  
  377.       this.delayTime = this.movementInterval;
  378.       this.currModeFinished = false;
  379.       switch (this.currMode) {
  380.          case 0:
  381.             this.currentX = 0;
  382.             this.currentY = -((Component)this).size().height;
  383.             return;
  384.          case 1:
  385.             this.currentX = 0;
  386.             this.currentY = ((Component)this).size().height;
  387.             return;
  388.          case 2:
  389.             this.currentX = ((Component)this).size().width;
  390.             this.currentY = 0;
  391.             return;
  392.          case 3:
  393.             this.currentX = -((Component)this).size().width;
  394.             this.currentY = 0;
  395.             return;
  396.          case 4:
  397.             this.currentX = ((Component)this).size().height;
  398.             this.currentY = ((Component)this).size().height;
  399.             return;
  400.          case 5:
  401.             this.currentX = -((Component)this).size().height;
  402.             this.currentY = ((Component)this).size().height;
  403.             return;
  404.          case 6:
  405.             this.currentX = ((Component)this).size().height;
  406.             this.currentY = -((Component)this).size().height;
  407.             return;
  408.          case 7:
  409.             this.currentX = -((Component)this).size().height;
  410.             this.currentY = -((Component)this).size().height;
  411.             return;
  412.          case 8:
  413.             this.currentX = -(((Component)this).size().height / 2);
  414.             this.currentY = -(((Component)this).size().height / 2);
  415.             return;
  416.          case 9:
  417.             this.currentX = -(((Component)this).size().width / 2);
  418.             this.currentY = 0;
  419.             return;
  420.          case 10:
  421.             this.currentX = 0;
  422.             this.currentY = -(((Component)this).size().height / 2);
  423.             return;
  424.          default:
  425.       }
  426.    }
  427.  
  428.    boolean IsMoveMode() {
  429.       return this.currMode >= 0 && this.currMode <= 7;
  430.    }
  431.  
  432.    boolean IsSplitMode() {
  433.       return this.currMode >= 8 && this.currMode <= 10;
  434.    }
  435.  
  436.    void BuildCenterSplitBothImages() {
  437.       this.centerSplitBothImageCount = this.images.length * 4;
  438.       this.centerSplitBothImages = new Image[this.images.length][4];
  439.  
  440.       for(int var1 = 0; var1 < this.images.length; ++var1) {
  441.          Image var2 = this.images[var1];
  442.          int var3 = var2.getWidth((ImageObserver)null);
  443.          int var4 = var2.getHeight((ImageObserver)null);
  444.          CropImageFilter var5 = new CropImageFilter(0, 0, var3 / 2, var4 / 2);
  445.          this.centerSplitBothImages[var1][0] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var5));
  446.          CropImageFilter var6 = new CropImageFilter(var3 / 2, 0, var3 / 2, var4 / 2);
  447.          this.centerSplitBothImages[var1][1] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var6));
  448.          CropImageFilter var7 = new CropImageFilter(0, var4 / 2, var3 / 2, var4 / 2);
  449.          this.centerSplitBothImages[var1][2] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var7));
  450.          CropImageFilter var8 = new CropImageFilter(var3 / 2, var4 / 2, var3 / 2, var4 / 2);
  451.          this.centerSplitBothImages[var1][3] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var8));
  452.       }
  453.  
  454.    }
  455.  
  456.    void BuildCenterSplitVertImages() {
  457.       this.centerSplitVertImageCount = this.images.length * 2;
  458.       this.centerSplitVertImages = new Image[this.images.length][2];
  459.  
  460.       for(int var1 = 0; var1 < this.images.length; ++var1) {
  461.          Image var2 = this.images[var1];
  462.          int var3 = var2.getWidth((ImageObserver)null);
  463.          int var4 = var2.getHeight((ImageObserver)null);
  464.          CropImageFilter var5 = new CropImageFilter(0, 0, var3 / 2, var4);
  465.          this.centerSplitVertImages[var1][0] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var5));
  466.          CropImageFilter var6 = new CropImageFilter(var3 / 2, 0, var3 / 2, var4);
  467.          this.centerSplitVertImages[var1][1] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var6));
  468.       }
  469.  
  470.    }
  471.  
  472.    void BuildCenterSplitHorizImages() {
  473.       this.centerSplitHorizImageCount = this.images.length * 2;
  474.       this.centerSplitHorizImages = new Image[this.images.length][2];
  475.  
  476.       for(int var1 = 0; var1 < this.images.length; ++var1) {
  477.          Image var2 = this.images[var1];
  478.          int var3 = var2.getWidth((ImageObserver)null);
  479.          int var4 = var2.getHeight((ImageObserver)null);
  480.          CropImageFilter var5 = new CropImageFilter(0, 0, var3, var4 / 2);
  481.          this.centerSplitHorizImages[var1][0] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var5));
  482.          CropImageFilter var6 = new CropImageFilter(0, var4 / 2, var3, var4 / 2);
  483.          this.centerSplitHorizImages[var1][1] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var6));
  484.       }
  485.  
  486.    }
  487.  
  488.    public boolean mouseEnter(Event var1, int var2, int var3) {
  489.       if (this.currImage != -1 && this.urls != null && this.currImage < this.urls.length && this.urls[this.currImage] != null) {
  490.          this.theApplet.showStatus(this.urls[this.currImage].toString());
  491.          return true;
  492.       } else {
  493.          return false;
  494.       }
  495.    }
  496.  
  497.    public boolean mouseExit(Event var1, int var2, int var3) {
  498.       if (this.currImage != -1 && this.urls != null && this.currImage < this.urls.length && this.urls[this.currImage] != null) {
  499.          this.theApplet.showStatus("");
  500.          return true;
  501.       } else {
  502.          return false;
  503.       }
  504.    }
  505.  
  506.    public boolean mouseDown(Event var1, int var2, int var3) {
  507.       if (this.currImage != -1 && this.urls != null && this.currImage < this.urls.length && this.urls[this.currImage] != null) {
  508.          this.theApplet.getAppletContext().showDocument(this.urls[this.currImage]);
  509.          return true;
  510.       } else {
  511.          return false;
  512.       }
  513.    }
  514.  
  515.    public Dimension minimumSize() {
  516.       return new Dimension(10, 10);
  517.    }
  518.  
  519.    public Dimension preferredSize() {
  520.       return new Dimension(10, 10);
  521.    }
  522.  
  523.    public synchronized void reshape(int var1, int var2, int var3, int var4) {
  524.       super.reshape(var1, var2, var3, var4);
  525.       this.osImage = null;
  526.       this.osg = null;
  527.       this.SetNewMode();
  528.       this.BuildCenterSplitBothImages();
  529.       this.BuildCenterSplitVertImages();
  530.       this.BuildCenterSplitHorizImages();
  531.    }
  532. }
  533.